/**
 * 节点类 主要实现链表的节点，包括存储数据和指向下一节点的指针
 * 
 * @author 杨满球（本地）
 */
class Node {

	// 存储的数据
	private Object data;
	// 下一节点指针
	private Node next;

	/**
	 * 无参构造函数
	 */
	public Node() {
	}

	/**
	 * 带数据输入的构造函数
	 * 
	 * @param data
	 *            节点的数据
	 */
	public Node(Object data) {
		this.data = data;
	}

	/**
	 * 带输入数据和下一节点指针的构造函数
	 * 
	 * @param data
	 *            节点数据
	 * @param nextNode
	 *            下一节点指针
	 */
	public Node(Object data, Node nextNode) {
		this(data);
		this.next = nextNode;
	}

	/**
	 * 判断是否具有下一节点
	 * 
	 * @return 如果具有下一节点，返回true，否则返回false
	 */
	public boolean hasNext() {
		if (next == null) {
			return false;
		} else {
			return true;
		}
	}

	/**
	 * 返回数据
	 * 
	 * @return 当前节点数据
	 */
	public Object getData() {
		return data;
	}

	/**
	 * 改变当前节点的数据
	 * 
	 * @param data
	 *            输入数据
	 */
	public void setData(Object data) {
		this.data = data;
	}

	/**
	 * 获得下一节点指针
	 * 
	 * @return 下一节点指针
	 */
	public Node getNextNode() {
		return next;
	}

	/**
	 * 改变下一节点指针
	 * 
	 * @param next
	 *            下一节点指针
	 */
	public void setNextNode(Node next) {
		this.next = next;
	}
}
